package com.naiterui.common.repository.core;

import java.io.Serializable;

import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.QueryByExampleExecutor;

/**
 * 基于Spring-data-jpa定义的数据操作接口，用于封装最基本的CRUD操作，为
 * 各业务服务的持久层提供统一的基础行为抽象，该接口具备如下特征：
 * 1、继承PagingAndSortingRepository，支持较为丰富的操作，同时支持声名方法式查询；
 * 2、继承了JpaSpecificationExecutor，支持使用Criteria API构建动态查询；
 * 3、对于deleteAll，deleteAllInBatch等风险较高的操作，在实现类中通过重写进行了屏蔽，避免出现勿用而引发事故；
 *
 * @author zhouyanxin
 * @since 1.0.0
 */
public interface BaseJpaRepository<T, ID extends Serializable>
        extends BaseOperations<T, ID>, QueryByExampleExecutor<T>, PagingAndSortingRepository<T, ID>, JpaSpecificationExecutor<T> {


}
